/*
https://flutter.cn/docs/development/ui/layout/adaptive-responsive

创建响应式和自适应的应用


Flutter 的首要目标，是构建一个可以使用单一代码来源，开发在所有平台上都有着良好的视觉和体验的应用的框架。

这意味着你的应用可能会在不同大小的屏幕上使用，从智能手表，到可折叠的双屏设备，再到高清显示器。

通常这样的考量被分为两种概念：自适应 和 响应式。理想条件下，你的应用应该两者兼具，但是它们究竟代表了什么？这两种概念有些类似，但并不是同一种含义。

自适应应用和响应式应用的区别
自适应 和 响应式 可以看作应用里的两种维度：你的应用可能是自适应的，但不是响应式的，又或是反行其道。当然，你的应用可能既自适应又为响应式，也可能两者均未实现。

响应式
通常来说，一个 响应式 应用的布局会根据可用的屏幕大小而调整。常见的场景是在用户重新调整窗口大小或旋转屏幕时，重新布局 UI。对于需要在多种设备（手表、手机、平板、笔记本或台式机）上运行的应用而言，这是必要的要素。

自适应
应用以 自适应 的方式在不同的设备上（移动端和桌面端）运行，需要同时处理鼠标、键盘和触控输入。这也意味着应用的视觉密度、组件的选择（层级菜单或底部抽屉）、平台特定的行为（例如置顶的窗口）等内容将在不同的平台上有一定的差异。

构建一个响应式的 Flutter 应用
Flutter 让你能够构建自动适配屏幕大小和旋转方向的应用。

构建响应式设计的 Flutter 应用，有以下两种较为基础的方式：

使用 LayoutBuilder 类
通过它的 builder 属性，你可以得到一个 BoxConstraints 对象。你可以检查约束里的属性，来决定如何进行显示。例如，如果约束里的 maxWidth 超过了你的宽度分界点，你可以返回一个 Scaffold，它包含一列内容，左侧是一个列表。如果约束更小，则返回一个列表在抽屉里的 Scaffold。你也可以根据你的设备高度、屏幕的比例或者其他的属性，来调整你的显示。当约束改变时（例如用户旋转了手机，或是在 Android N 上将应用放置到 tile UI 中）构建方法会运行。

在构建方法中使用 MediaQuery.of() 方法
这个方法可以获取到当前应用（基于上下文）的尺寸、旋转方向等信息。如果你需要基于完整的上下文信息进行布局决策，而不是基于特定的 widget，这个方法将非常有用。同样的，如果应用的尺寸发生了改变，构建方法也会自动执行。

以下是其他有助于构建响应式界面的 widget：

AspectRatio
CustomSingleChildLayout
CustomMultiChildLayout
FittedBox
FractionallySizedBox
LayoutBuilder
MediaQuery
MediaQueryData
OrientationBuilder



 */